mimo's MidiOut

(rather call it "MidiOut for ASIO":)
type: Effect
$Revision: 1.9 $
author: mimo@restoel.net
home:  restoel.net/mimo


[usage]  [hints] [limitations][programming][what's new]

why another MidiOut?

there are already some machines around which do the same but better-they didnt work on my machine. I dont know the reason why.

usage

MidiOut comes together with MidiGen which is used as the midi generator (yes!). If you dont have MidiGen yet, get the latest version from www.buzzmachines.com, otherwise MidiOut is useless. Use MidiGen to generate MidiSignals and route them into MidiOut (=connect it to MidiOut). Look up the device number in MidiOut's Midi-Info (right-button menu) or set it through the buzz-double-click menu. In Midi-Info you will see a list of all midi-devices that m$win found in your system, on the left you'll see the number (for later use in MidiGen) followed by one of these symbols:
            | the output is in use by some other application-check view|preferences|midi output and disable the device if you want to use it in MidiOut
            - the device is free and can be wired to MidiOut
            ~ the device is wired to MidiOut and may be used by multiple tracks
            ! the device is "bogus"-m$win couldnt query its capabilities  (haven't had this one yet)

Edit the pattern in MidiGen - you will need to set a device and a channel even if you selected one already in MidiOut - otherwise you want hear anything (the device you set in MidiOut will override all other device selections you make in MidiGen). You dont have to set the device or channel in MidiGen, use MidiOut for device and channel selection. You may connect one MidiGen to multiple MidiOut and vice versa - multiple MidiGens to one MidiOut.

hints

limitations

programming

yes, you can develop your own midi generators sendig data to a MidiOut. Create a header file with the following content:
typedef enum { 
 c0_Nothing,
 c0_FirstDevice = 128, //meaning not more than 120 devices possible
 c0_LastPossibleValue=128+32
}ECommand0;
typedef enum {
 c1_FirstChannel=0,
 c1_LastChannel=15,
 c1_NoChannel,
 c1_OmniChannel,
 c1_OpenDevice = 128,
 c1_CloseDevice,
 c1_LastPossibleValue
}ECommand1;
MidiOut accepts commands with this syntax sent to its Work-method (MidiOut is a mono-machine, the float * is converted to an unsigned char * ):
unsigned char ucDevice,ucChannel,ucMidiStatus,ucMidiData1,ucMidiData2;  == 5 Bytes
ucDevice:   ECommand0 (see above):128+device number
ucChannel:ECommand1(see above):channel(0-15),or Open/Close Device; rest is not implemented yet
ucMidiStatus: Midi Status Byte: 0x8 for Note Off; 0x9 for Note On, ...
ucMidiData1: Midi Data Byte 1 (eg .Note)
ucMidiData2: Midi Data Byte 2 (eg. Velocity)
 

what's new

2001-05-21: fixed some nasty bugs, e.g. you couldnt start buzz a 2nd time without restarting win$, everything looks quite stable at the moment
2001-05-01: Check the limitations section for new features and bugs fixed

$Log: mimo's\040MidiOut.html,v $

Revision 1.9 2001-05-21 20:09:36+02 mimo

timing in MDKWork, no thread->ASIO okay, rest is shit

fixed MidiSubsys::Unregister bug

no Open/Close-Device needed

removed Dialog timer (no need for->Update button)

multiple connections are okay

fixed some memory leaks and access bugs

Revision 1.8 2001-05-01 22:44:57+02 mimo

2nd release (still in beta)

Revision 1.7 2001-05-01 20:36:01+02 mimo fixed rcs-tags in documentation Revision 1.6 2001-05-01 20:32:01+02 mimo <>
Revision 1.2  2001-05-01 19:32:11+02  mimo
now have a central midisubsys/engine
fixed some bugs
delay is working
timinig is improved but far from being good (ASIO is okay) mechanism using tick and play to get knowledge about when an event should be played

Revision 1.1  2001-05-01 19:27:43+02  mimo
Initial revision

(C) mimo@restoel.net. MidiOut is of course donationware on a voluntary basis.
$Id: mimo's\040MidiOut.html,v 1.3 2001-05-01 19:32:10+02 mimo Exp mimo $